﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

/* 
 * Scaner for c# language by Kavai
 */

namespace MyScaner
{
    enum KIND
    {
        UNKNOWN = -1,

        ABSTRACT,
        AS,
        ASSIGN,
        ASSIGN_DIV,
        ASSIGN_MULT,
        ASSIGN_SUB,
        ASSIGN_SUMM,
        BASE,
        BOOL,
        BREAK,
        BYTE,
        CASE,
        CATCH,
        CHAR,
        CHAR_KEYWORD,
        CHECKED,
        CLASS,
        COMMA,
        COMMENT,
        CONST,
        CONTINUE,
        DECIMAL,
        DECREMENT,
        DEFAULT,
        DELEGATE,
        DENIAL,
        DIGIT,
        DIVISION,
        DO,
        DOUBLE,
        ELSE,
        ENUM,
        EQUAL,
        ESC_SEQ,
        EVENT,
        EXPLICIT,
        EXTERN,
        FALSE,
        FINALLY,
        FIXED,
        FLOAT,
        FOR,
        FOREACH,
        GOTO,
        HEX_DIGIT,
        IDENTIFIER,
        IF,
        IMPLICIT,
        IN,
        INCREMENT,
        INT,
        INTERFACE,
        INTERNAL,
        IS,
        LEFT_BRACE,
        LEFT_BRACKET,
        LESS,
        LESS_EQUAL,
        LOCK,
        LONG,
        MORE,
        MORE_EQUAL,
        MULTIPLICATION,
        NAMESPACE,
        NEW,
        NOT_EQUAL,
        NULL,
        OBJECT,
        OCTAL_ESC,
        OPERATOR,
        OUT,
        OVERRIDE,
        PARAMS,
        POINT,
        PRIVATE,
        PROTECTED,
        PUBLIC,
        READONLY,
        REF,
        RETURN,
        RIGHT_BRACE,
        RIGHT_BRACKET,
        SBYTE,
        SEALED,
        SEMICOLON,
        SHORT,
        SIZEOF,
        STACKALLOC,
        STATIC,
        STRING,
        STRING_COMMENT,
        STRING_KEYWORD,
        STRUCT,
        SUBTRACTION,
        SUMM,
        SWITCH,
        TAB,
        THIS,
        THROW,
        TRUE,
        TRY,
        TYPEOF,
        UINT,
        ULONG,
        UNCHECKED,
        UNICODE_ESC,
        UNSAFE,
        USHORT,
        USING,
        VIRTUAL,
        VOID,
        VOLATILE,
        WHILE,
        EOS
    }
    class Token
    {
        public string _val { get; set; }
        public KIND _kind { get; set; }
        public Token(KIND kind, string val)
        {
            _kind = kind;
            _val = val;
        }
        public override string ToString()
        {
            return _kind.ToString();
        }
    }
}
